package com.adnaan.backend.service;

import com.adnaan.backend.entity.SystemMessage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface SystemMessageService extends IService<SystemMessage> {
    /**
     * 发送消息给指定用户
     */
    void sendMessageToUser(SystemMessage message);

    /**
     * 广播消息给所有用户
     */
    void broadcastMessage(SystemMessage message);

    /**
     * 获取用户未读消息数量
     */
    long getUnreadCount(Long userId);

    /**
     * 分页获取用户消息列表
     */
    Page<SystemMessage> getUserMessages(Long userId, Page<SystemMessage> page);

    /**
     * 标记消息为已读
     */
    void markAsRead(Long messageId);

    /**
     * 标记用户所有消息为已读
     */
    void markAllAsRead(Long userId);

    /**
     * 创建新订单消息
     */
    void createOrderMessage(Long orderId, Long userId);

    /**
     * 创建售后申请消息
     */
    void createAfterSalesMessage(Long afterSalesId, Long userId);

    /**
     * 创建订单取消消息
     */
    void createOrderCancelMessage(Long orderId, Long userId);

    void createOrderRemindMessage(Long orderId, Long userId);

    List<SystemMessage> getLatestUnreadMessages(Long userId, Integer i);

    void applyPass(Long userId);

    void applyRefuse(Long userId, String reason);
}